14727
17770
Deze vraag heeft hier al antwoorden:
Express js - kan niet omleiden
(4 antwoorden)
7 jaar geleden gesloten.
Ik gebruik passportjs met een middleware hieronder. Het is de bedoeling om te controleren of de gebruiker inlogt wanneer hij bepaalde dingen vraagt. Als hij niet is aangemeld, moet hij worden doorgestuurd naar de aanmeldingspagina.
Ik heb een aanvraagroute als volgt:
app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update);
Deze route wordt aangeroepen wanneer de gebruiker een bron met de naam Fantasy Team op de website probeert bij te werken
auth.requiresLogin is als volgt een middleware:
exports.requiresLogin = functie (req, res, volgende) {
if (req.isAuthenticated ()) {
terug volgende ()
​
return res.redirect ("/ signin");
​
Nadat ik mijn gebruiker had aangemeld, simuleerde ik het verlopen van de sessie door de sessiecookie te verwijderen. Daarna heb ik via de website een PUT '/ fantasyteams / 123' verzoek gedaan om fantasy team nummer 123 bij te werken.
fantasyteams.update is gewoon een mongodb / mongoose-opslagbewerking:
exports.update = functie (req, res) {
var fantasyteam = req.fantasyteam;
fantasyteam = _.extend (fantasyteam, req.body);
fantasyteam.save (functie (err) {
res.jsonp (fantasyteam);
​
​
Zoals verwacht heeft de bovenstaande route-handler (app.put ...) het verzoek opgevangen, geef het door aan de auth.requiresLogin-middleware om te controleren of de gebruiker is ingelogd. Het blijkt dat de gebruiker niet is ingelogd sinds ik heb verwijderd zijn sessie-cookie. res.redirect wordt aangeroepen zoals verwacht. De website verwijst echter niet door naar de aanmeldingspagina. Ik zie dit in de opdrachtlogboeken van node.js:
PUT / aanmelden 404328 ms
Wat heb ik verkeerd gedaan? 
Het probleem lijkt te zijn dat je geen routehandler hebt voor PUT / signin. Het oorspronkelijke verzoek was een put, dus als het omleidt, maakt het nog steeds deel uit van hetzelfde 'put'-verzoek van de browser. Voeg gewoon een handler toe voor put / post / wat dan ook met app.all ('/ signin')
3
​
Niet het antwoord waar je naar zoekt? Blader door andere vragen met de tag node.js sessiecookies express passport.js of stel uw eigen vraag.